home *** CD-ROM | disk | FTP | other *** search
- package java.lang;
-
- import [Ljava.lang.StackTraceElement;;
- import java.io.IOException;
- import java.io.ObjectOutputStream;
- import java.io.PrintStream;
- import java.io.PrintWriter;
- import java.io.Serializable;
-
- public class Throwable implements Serializable {
- private static final long serialVersionUID = -3042686055658047285L;
- private transient Object backtrace;
- private String detailMessage;
- private Throwable cause = this;
- private StackTraceElement[] stackTrace;
-
- public Throwable() {
- this.fillInStackTrace();
- }
-
- public Throwable(String var1) {
- this.fillInStackTrace();
- this.detailMessage = var1;
- }
-
- public Throwable(String var1, Throwable var2) {
- this.fillInStackTrace();
- this.detailMessage = var1;
- this.cause = var2;
- }
-
- public Throwable(Throwable var1) {
- this.fillInStackTrace();
- this.detailMessage = var1 == null ? null : var1.toString();
- this.cause = var1;
- }
-
- public String getMessage() {
- return this.detailMessage;
- }
-
- public String getLocalizedMessage() {
- return this.getMessage();
- }
-
- public Throwable getCause() {
- return this.cause == this ? null : this.cause;
- }
-
- public synchronized Throwable initCause(Throwable var1) {
- if (this.cause != this) {
- throw new IllegalStateException("Can't overwrite cause");
- } else if (var1 == this) {
- throw new IllegalArgumentException("Self-causation not permitted");
- } else {
- this.cause = var1;
- return this;
- }
- }
-
- public String toString() {
- String var1 = this.getClass().getName();
- String var2 = this.getLocalizedMessage();
- return var2 != null ? var1 + ": " + var2 : var1;
- }
-
- public void printStackTrace() {
- this.printStackTrace(System.err);
- }
-
- public void printStackTrace(PrintStream var1) {
- synchronized(var1) {
- var1.println(this);
- StackTraceElement[] var3 = this.getOurStackTrace();
-
- for(int var4 = 0; var4 < var3.length; ++var4) {
- var1.println("\tat " + var3[var4]);
- }
-
- Throwable var7 = this.getCause();
- if (var7 != null) {
- var7.printStackTraceAsCause(var1, var3);
- }
-
- }
- }
-
- private void printStackTraceAsCause(PrintStream var1, StackTraceElement[] var2) {
- StackTraceElement[] var3 = this.getOurStackTrace();
- int var4 = var3.length - 1;
-
- for(int var5 = var2.length - 1; var4 >= 0 && var5 >= 0 && var3[var4].equals(var2[var5]); --var5) {
- --var4;
- }
-
- int var6 = var3.length - 1 - var4;
- var1.println("Caused by: " + this);
-
- for(int var7 = 0; var7 <= var4; ++var7) {
- var1.println("\tat " + var3[var7]);
- }
-
- if (var6 != 0) {
- var1.println("\t... " + var6 + " more");
- }
-
- Throwable var8 = this.getCause();
- if (var8 != null) {
- var8.printStackTraceAsCause(var1, var3);
- }
-
- }
-
- public void printStackTrace(PrintWriter var1) {
- synchronized(var1) {
- var1.println(this);
- StackTraceElement[] var3 = this.getOurStackTrace();
-
- for(int var4 = 0; var4 < var3.length; ++var4) {
- var1.println("\tat " + var3[var4]);
- }
-
- Throwable var7 = this.getCause();
- if (var7 != null) {
- var7.printStackTraceAsCause(var1, var3);
- }
-
- }
- }
-
- private void printStackTraceAsCause(PrintWriter var1, StackTraceElement[] var2) {
- StackTraceElement[] var3 = this.getOurStackTrace();
- int var4 = var3.length - 1;
-
- for(int var5 = var2.length - 1; var4 >= 0 && var5 >= 0 && var3[var4].equals(var2[var5]); --var5) {
- --var4;
- }
-
- int var6 = var3.length - 1 - var4;
- var1.println("Caused by: " + this);
-
- for(int var7 = 0; var7 <= var4; ++var7) {
- var1.println("\tat " + var3[var7]);
- }
-
- if (var6 != 0) {
- var1.println("\t... " + var6 + " more");
- }
-
- Throwable var8 = this.getCause();
- if (var8 != null) {
- var8.printStackTraceAsCause(var1, var3);
- }
-
- }
-
- public synchronized native Throwable fillInStackTrace();
-
- public StackTraceElement[] getStackTrace() {
- return (StackTraceElement[])this.getOurStackTrace().clone();
- }
-
- private synchronized StackTraceElement[] getOurStackTrace() {
- if (this.stackTrace == null) {
- int var1 = this.getStackTraceDepth();
- this.stackTrace = new StackTraceElement[var1];
-
- for(int var2 = 0; var2 < var1; ++var2) {
- this.stackTrace[var2] = this.getStackTraceElement(var2);
- }
- }
-
- return this.stackTrace;
- }
-
- public void setStackTrace(StackTraceElement[] var1) {
- StackTraceElement[] var2 = (StackTraceElement[])((StackTraceElement;)var1).clone();
-
- for(int var3 = 0; var3 < var2.length; ++var3) {
- if (var2[var3] == null) {
- throw new NullPointerException("stackTrace[" + var3 + "]");
- }
- }
-
- this.stackTrace = var2;
- }
-
- private native int getStackTraceDepth();
-
- private native StackTraceElement getStackTraceElement(int var1);
-
- private synchronized void writeObject(ObjectOutputStream var1) throws IOException {
- this.getOurStackTrace();
- var1.defaultWriteObject();
- }
- }
-